"""
@Author  : 康帅
@Time    : 2021/3/16 15:06
@Function: 克隆模式：App设置修改案列
"""
from DesignMode.CloneMode.CopyBase import Clone

"""
需求：
很多应用程序（Application）都会有一些功能设置的操作（如字体、字号、常用快捷键等），
也就是说这些功能是可配置和修改的。对于一些专业性的软件（如集成开发工具PyCharm和工程制图软件AutoCAD），这些配置可能会非常多而且复杂。
在修改这些配置时，通常希望能备份一下原有的配置，以便在设置不合理或出问题时，还能再切换到之前的配置。
这时，通常的做法是：复制一份原来的配置，然后在新的配置上做修改，以符合自己的使用习惯，当配置出问题时，再切换到原来的配置
"""


class AppConfig(Clone):
    """ 系统配置类 """

    def __init__(self, config_name):
        self.__config_name = config_name
        self.parse_from_file("./config/default.xml")

    def parse_from_file(self, *args):
        self.__font_type = "宋体"
        self.__font_size = 14
        self.__language = "中文"
        self.__log_path = "./logs/app.log"

    def save_to_file(self, file_path):
        pass

    def copy_config(self, config_name):
        """ 创建一个配置副本 """
        config = self.deep_clone()
        config.__config_name = config_name
        return config

    def show_info(self):
        print("%s 的配置信息如下：" % self.__config_name)
        print("字题：", self.__font_type)
        print("字号：", self.__font_size)
        print("语言：", self.__language)
        print("异常日志：", self.__log_path)

    def set_font_type(self, font_type):
        self.__font_type = font_type

    def set_font_size(self, font_size):
        self.__font_size = font_size

    def set_language(self, language):
        self.__language = language

    def set_log_path(self, log_path):
        self.__log_path = log_path


if __name__ == '__main__':
    default = AppConfig("default")
    default.show_info()
    print("-------------------------------")

    new_config = default.copy_config("new_config")
    new_config.set_font_type("微软雅黑")
    new_config.set_font_size(18)
    new_config.set_language("English")
    new_config.show_info()
